package cn.tedu.net.desgin;
/*
* debug--断点调试
* 断点:就是一个标记
* 打断点:在代码区域左边的空白处双击即可,再次双击,取消断点
* 在哪里加断点?想看哪个语句的执行结果就在哪个语句前加,但不能加在结构代码上
* */
public class OOPTest {
    public static void main(String[] args) {
        //测试材料一for循环
        for (int i = 1; i <=10; i++) {
            System.out.println(i);
        }
        //测试材料二 递归
        int result=f(5);
        System.out.println(result);
        //测试材料三 查看不同元素的执行顺序
        B b=new B();

    }
    public static int f(int n){
        if(n==1){
            return 1;
        }else{
            return n*f(n-1);
        }
    }
}
class A{
    static {
        System.out.println("我是父类的静态代码块");
    }
    {
        System.out.println("我是父类的构造代码块");
    }
    public A(){
        System.out.println("我是A的构造方法");
    }
    public void eat(){
        System.out.println("我是父类的普通方法");
        {
            System.out.println("我是父类的局部代码块");
        }
    }
}
class B extends A{
    static {
        System.out.println("我是子类的静态代码块");
    }
    {
        System.out.println("我是子类的构造代码块");
    }
    public B(){
        System.out.println("我是B的构造方法");
    }
    public void eat(){
        System.out.println("我是子类的普通方法");
        {
            System.out.println("我是子类的局部代码块");
        }
    }
}